3e6377d6eiFjF1hHIS6JEIOFk62xSA tools/balloon/README
3e6377dbGcgnisKw16DPCaND7oGO3Q tools/balloon/balloon.c
3eb781edFwm_pW9FwnQACIe68viLOw tools/control/Makefile
+3eca6a96a31IwaKtkEa4jmzwTWlm8Q tools/control/README-xenctl
3eb781fcTp_LPQwaot3SSSehkaf4eg tools/control/build-dom.xml
3ec41f7cWCxQ8pdH8ZWqhhv-38qQ1w tools/control/build-xen.xml
3ec41f7ca6IBXDSe0HVcMPp3PPloOQ tools/control/build.properties
--- /dev/null
+
+some notes on configuring xenctl...
+
+to build:
+
+ # edit xeno.bk/tools/control/build.properties
+ # change manger.url to your xenoserver: mousetrap-0.xeno.cl.cam.ac.uk
+ # change build.home to your xeno.bk path
+ export PATH=/usr/groups/xeno/build_tools/bin:${PATH}
+ # this next step has already been done.
+ # cp $CATALINA_HOME/server/lib/catalina-ant.jar $ANT_HOME/lib
+ cd xeno.bk/tools/control
+ make
+ cd xeno.bk/tools/internal
+ make
+
+to setup:
+
+ ## expand the jakarta (aka catalina) tree somewhere accessible by dom0
+ export ROOTDIR=/anfs/scratch/labyrinth/ach61
+ cd $ROOTDIR
+ tar zxf /usr/groups/xeno/archive/tomcat-4.1.24.tar.gz
+ export CATALINA_HOME=$ROOTDIR/jakarta-tomcat-4.1.24
+ export JAVA_HOME=/usr/groups/xeno/build_tools/java-1.4.1
+
+ ## edit $CATALINA_HOME/conf/server.xml, change port 8080 to port 80
+ cp $CATALINA_HOME/conf/server.xml $CATALINA_HOME/conf/server.orig
+ sed 's/8080/80/g' $CATALINA_HOME/conf/server.orig > $CATALINA_HOME/conf/server.xml
+
+ ## install the xenctl web archive
+ cp xeno.bk/tools/control/dist/xenctl-0.1-dev.war $CATALINA_HOME/webapps/xenctl.war
+ cp xeno.bk/tools/control/domctl.xml /var/lib/xen
+
+ ## either edit xi_tools_dir in domctl.xml or copy the binaries
+ # find xeno.bk/tools/internal -perm +111 -type f -exec cp {} /usr/local/bin \;
+
+to run:
+ $CATALINA_HOME/bin/startup.sh
+ # point your browser at hostname-0.xeno.cl.cam.ac.uk:80/xenctl
+
+
+for development:
+ ## to "make install" in xeno.bk/tools/control instead of copying the war file
+ cp $CATALINA_HOME/conf/tomcat-users.xml $CATALINA_HOME/conf/tomcat-users.orig
+ sed -e 's/<tomcat-users>/<tomcat-users>\\r <role rolename="standard"\/>\\r <role rolename="manager"\/>\\r <user username="hobbes" password="tiger" roles="standard,manager"\/>/' $CATALINA_HOME/conf/tomcat-users.orig > $CATALINA_HOME/conf/tomcat-users.xml
{
String substring = size;
int suffix = 1;
+ long value = 0;
+
+ if (size == null)
+ {
+ return 0;
+ }
if ((substring = check(size, 'm')) != null)
{
substring = size;
}
- return Long.decode(substring).longValue() * suffix;
+ try
+ {
+ value = Long.decode(substring).longValue() * suffix;
+ }
+ catch (NumberFormatException e)
+ {
+ value = 0;
+ }
+
+ return value;
}
static String
Partition p = pm.get_partition(partition);
String result="done";
int loop;
+ long size;
if (p == null)
{
return (" eh? what partition: " + partition);
}
- vdm.add_xeno_partition(p,
- Library.parse_size(chunksize)/default_sector_size);
+ size = Library.parse_size(chunksize) / default_sector_size;
+ if (size == 0)
+ {
+ return ("error: invalid chunk size");
+ }
+ vdm.add_xeno_partition(p, size);
pm.add_xeno_partition(p);
/* return pm.dump(true); */
{
VirtualDisk vd;
Date date = new Date();
+ long parse_size;
- vd = vdm.create_virtual_disk(name,
- Library.parse_size(size)/default_sector_size,
+
+ parse_size = Library.parse_size(size)/default_sector_size;
+ if (parse_size == 0)
+ {
+ return ("error: invalid size");
+ }
+ vd = vdm.create_virtual_disk(name, parse_size,
new Date(date.getTime() + expiry));
return ("Virtual Disk created with key: " + vd.get_key());
public String
doDeleteVirtualDisk (String key)
{
+ if (key == null ||
+ key.trim().equals(""))
+ {
+ return ("error: no virtual disk specified");
+ }
vdm.delete_virtual_disk(key);
return ("okay");
String domains[] = hsrw.getParameterValues("dom");
boolean force = hsrw.getParameter("force").equals("true");
- for (int i = 0; i < domains.length; i++)
+ if (domains == null || domains.length == 0)
{
%>
+Error: no domain specified.<br>
+<%
+ }
+ else
+ {
+ for (int i = 0; i < domains.length; i++)
+ {
+%>
result <%= domains[i] %> =
<%= command_destroy.executeCommand(d, Integer.parseInt(domains[i]),
force) %> <br>
<%
+ }
}
%>
String domains[] = hsrw.getParameterValues("dom");
- for (int i = 0; i < domains.length; i++)
+ if (domains == null || domains.length == 0)
{
%>
-result <%= domains[i] %> =
- <%= command_start.executeCommand(d, Integer.parseInt(domains[i])) %> <br>
+Error: no domain specified.<br>
<%
}
+ else
+ {
+ for (int i = 0; i < domains.length; i++)
+ {
+%>
+result <%= domains[i] %> =<br>
+<%= command_start.executeCommand(d, Integer.parseInt(domains[i])) %> <br>
+<%
+ }
+ }
%>
</td>
String domains[] = hsrw.getParameterValues("dom");
- for (int i = 0; i < domains.length; i++)
+ if (domains == null || domains.length == 0)
{
%>
+Error: no domain specified.<br>
+<%
+ }
+ else
+ {
+ for (int i = 0; i < domains.length; i++)
+ {
+%>
result <%= domains[i] %> =
<%= command_stop.executeCommand(d, Integer.parseInt(domains[i])) %> <br>
<%
+ }
}
%>
HttpServletRequestWrapper hsrw = new HttpServletRequestWrapper(request);
String partitions[] = hsrw.getParameterValues("p");
- String size = hsrw.getParameter("chunk").trim() +
- hsrw.getParameter("chunkunits").trim();
+ String size = null;
- for (int i = 0; i < partitions.length; i++)
+ if (partitions == null || partitions.length == 0)
{
%>
-p = <%= root.doAddPartition(partitions[i], size) %> <br>
+Error: No partitions chosen.<br>
<%
}
+ else if (hsrw.getParameter("chunk") == null ||
+ hsrw.getParameter("chunk").trim().equals(""))
+ {
+%>
+Error: chunk size not specified.<br>
+<%
+ }
+ else
+ {
+ size = hsrw.getParameter("chunk").trim() +
+ hsrw.getParameter("chunkunits").trim();
+ for (int i = 0; i < partitions.length; i++)
+ {
+%>
+output[<%= i %>] =<br>
+<%= root.doAddPartition(partitions[i], size) %> <br>
+<%
+ }
+ }
%>
-chunk = <%= hsrw.getParameter("chunk") %>
-<br>
-chunkunits = <%= hsrw.getParameter("chunkunits") %>
-<br>
-size = <%= size %>
-<br>
<%
<%
HttpServletRequestWrapper hsrw = new HttpServletRequestWrapper(request);
+
+ if (hsrw.getParameter("vd") == null ||
+ hsrw.getParameter("vd").trim().equals(""))
+ {
+%>
+Error: No virtual disk chosen.<br>
+<%
+ }
+ else if (hsrw.getParameter("domain") == null ||
+ hsrw.getParameter("domain").trim().equals(""))
+ {
+%>
+Error: No domain specified.<br>
+<%
+ }
+ else if (hsrw.getParameter("vbd") == null ||
+ hsrw.getParameter("vbd").trim().equals(""))
+ {
+%>
+Error: No virtual block device number specified.<br>
+<%
+ }
+ else
+ {
+ int domain = -1;
+ int vbd = -1;
+
+ try
+ {
+ domain = Integer.decode(hsrw.getParameter("domain")).intValue();
+ vbd = Integer.decode(hsrw.getParameter("vbd")).intValue();
+%>
+output =<br>
+<%= root.doCreateVirtualBlockDevice(hsrw.getParameter("vd"),
+ domain, vbd,
+ hsrw.getParameter("mode")) %>
+<%
+ }
+ catch (NumberFormatException e)
+ {
+ if (domain == -1)
+ {
+%>
+Error: invalid domain specification.<br>
+<%
+ }
+ else
+ {
+%>
+Error: invalid virtual block device number specification.<br>
+<%
+ }
+ }
+ }
%>
-output = <%= root.doCreateVirtualBlockDevice(hsrw.getParameter("vd"),
- Integer.decode(hsrw.getParameter("domain")).intValue(),
- Integer.decode(hsrw.getParameter("vbd")).intValue(),
- hsrw.getParameter("mode"))
- %>
-<br>
-vd = <%= hsrw.getParameter("vd") %>
-<br>
-domain = <%= hsrw.getParameter("domain") %>
-<br>
-vbd = <%= hsrw.getParameter("vbd") %>
-<br>
-mode = <%= hsrw.getParameter("mode") %>
<%
root.doFlushState();
<%
HttpServletRequestWrapper hsrw = new HttpServletRequestWrapper(request);
- String size = hsrw.getParameter("size").trim() +
- hsrw.getParameter("sizeunits").trim();
- long expiry = Long.decode(hsrw.getParameter("expiry")).longValue();
+ String size = null;
+ String expiry_string = null;
+ long expiry = 0;
- /* not perfect, but good enough for now... */
- if ( hsrw.getParameter("expiryunits").equals("d"))
+ if (hsrw.getParameter("size") == null ||
+ hsrw.getParameter("size").trim().equals(""))
{
- expiry *= 24 * 60 * 60 * 1000;
- }
- else if ( hsrw.getParameter("expiryunits").equals("w"))
- {
- expiry *= 24 * 60 * 60 * 1000 * 7;
+%>
+Error: size not specified.<br>
+<%
}
- else if ( hsrw.getParameter("expiryunits").equals("m"))
+ else if (hsrw.getParameter("expiry") == null ||
+ hsrw.getParameter("expiry").trim().equals(""))
{
- expiry *= 24 * 60 * 60 * 1000 * 30;
+%>
+Error: expiry time not specified.<br>
+<%
}
- else if ( hsrw.getParameter("expiryunits").equals("y"))
+ else
{
- expiry *= 24 * 60 * 60 * 1000 * 365;
- }
+ size = hsrw.getParameter("size").trim() +
+ hsrw.getParameter("sizeunits").trim();
+
+ try
+ {
+ expiry = Long.decode(hsrw.getParameter("expiry")).longValue();
+ /* not perfect, but good enough for now... */
+ if ( hsrw.getParameter("expiryunits").equals("d"))
+ {
+ expiry *= 24 * 60 * 60 * 1000;
+ }
+ else if ( hsrw.getParameter("expiryunits").equals("w"))
+ {
+ expiry *= 24 * 60 * 60 * 1000 * 7;
+ }
+ else if ( hsrw.getParameter("expiryunits").equals("m"))
+ {
+ expiry *= 24 * 60 * 60 * 1000 * 30;
+ }
+ else if ( hsrw.getParameter("expiryunits").equals("y"))
+ {
+ expiry *= 24 * 60 * 60 * 1000 * 365;
+ }
%>
-output = <%= root.doCreateVirtualDisk( hsrw.getParameter("name"),
- size, expiry)
- %>
-<br>
-size = <%= size %>
-<br>
-expiry = <%= hsrw.getParameter("expiry") %>
-<br>
-expiryunits = <%= hsrw.getParameter("expiryunits") %>
+output =<br>
+<%= root.doCreateVirtualDisk( hsrw.getParameter("name"), size, expiry) %>
<br>
+<%
+ }
+ catch (NumberFormatException e)
+ {
+%>
+Error: invalid expiry time specification.<br>
+<%
+ }
+ }
+%>
<%
root.doFlushState();
-Refresh Virtual Disk Results
+Refresh Virtual Disk
SECTION&XenoServers
BREADCRUMB&Virtual Disk Manager&vd.jsp
HttpServletRequestWrapper hsrw = new HttpServletRequestWrapper(request);
String vds[] = hsrw.getParameterValues("vd");
- long expiry = Long.decode(hsrw.getParameter("expiry")).longValue();
+ long expiry;
- /* not perfect, but good enough for now... */
- if ( hsrw.getParameter("expiryunits").equals("d"))
- {
- expiry *= 24 * 60 * 60 * 1000;
- }
- else if ( hsrw.getParameter("expiryunits").equals("w"))
+ if (vds == null || vds.length == 0)
{
- expiry *= 24 * 60 * 60 * 1000 * 7;
- }
- else if ( hsrw.getParameter("expiryunits").equals("m"))
- {
- expiry *= 24 * 60 * 60 * 1000 * 30;
+%>
+Error: No virtual disk chosen.<br>
+<%
}
- else if ( hsrw.getParameter("expiryunits").equals("y"))
+ else if (hsrw.getParameter("expiry") == null ||
+ hsrw.getParameter("expiry").trim().equals(""))
{
- expiry *= 24 * 60 * 60 * 1000 * 365;
- }
-
- if (vds == null)
- {
%>
-no virtual disks selected.
+Error: expiry time not specified.<br>
<%
}
else
{
+ expiry = Long.decode(hsrw.getParameter("expiry")).longValue();
+
+ /* not perfect, but good enough for now... */
+ if ( hsrw.getParameter("expiryunits").equals("d"))
+ {
+ expiry *= 24 * 60 * 60 * 1000;
+ }
+ else if ( hsrw.getParameter("expiryunits").equals("w"))
+ {
+ expiry *= 24 * 60 * 60 * 1000 * 7;
+ }
+ else if ( hsrw.getParameter("expiryunits").equals("m"))
+ {
+ expiry *= 24 * 60 * 60 * 1000 * 30;
+ }
+ else if ( hsrw.getParameter("expiryunits").equals("y"))
+ {
+ expiry *= 24 * 60 * 60 * 1000 * 365;
+ }
+
for (int i = 0; i < vds.length; i++)
{
%>
}
%>
-<br>
-expiry = <%= hsrw.getParameter("expiry") %>
-<br>
-expiryunits = <%= hsrw.getParameter("expiryunits") %>
-<br>
-
<%
root.doFlushState();
%>